#pragma once 
//封装信号量

#include<iostream>
#include<semaphore.h>

class Sem
{
public: 
    //构造
    Sem(int num):_initnum(num)
    {
        //初始化信号量
        sem_init(&_sem , 0 , _initnum);
    }
    //P操作，对于自己的--
    void P()
    {
        int n = sem_wait(&_sem);
        (void)n;
    }
    //V操作
    void V()
    {
        int n = sem_post(&_sem);
        (void)n;
    }
    ~Sem()
    {
        //调用信号量的destroy
        sem_destroy(&_sem);
    }
private:
    sem_t _sem;//信号量
    int _initnum;//记录信号的数量，以便初始化_sem
};